package com.example.game;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

    public class MyPaintView extends View {
        private List<Point> allPoint = new ArrayList<Point>();
        public MyPaintView(Context context, AttributeSet attrs) {
            super(context, attrs);
            super.setBackgroundColor(Color.WHITE);
            super.setOnTouchListener(new OnTouchListenerImp());
        }

        private class OnTouchListenerImp implements OnTouchListener {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //Point类记录当前的X和Y坐标
                Point p = new Point((int)event.getX(),(int)event.getY());
                if(event.getAction() == MotionEvent.ACTION_DOWN) {  //判断抬起
                    allPoint = new ArrayList<Point>();  //开始新的记录
                    allPoint.add(p);   //记录坐标点
                } else if(event.getAction() == MotionEvent.ACTION_UP) {
                    allPoint.add(p);   //记录坐标点
                    MyPaintView.this.postInvalidate();  //重绘
                }
                return true;
            }
        }

        @Override
        protected void onDraw(Canvas canvas) {  //进行绘图
            Paint p = new Paint();
            p.setColor(Color.RED);   //设置颜色
            if(allPoint.size()>1) {
                Iterator<Point> iter = allPoint.iterator();
                Point first = null;
                Point last = null;
                while(iter.hasNext()) {    //迭代输出
                    if(first == null) {
                        first = (Point) iter.next();
                    } else {
                        if(last != null) {
                            first = last;       //修改起始点
                        }
                        last = (Point) iter.next();   //结束点
                        canvas.drawLine(first.x,first.y,last.x,last.y,p);
                    }
                }
            }

            super.onDraw(canvas);
        }
    }


